The present disclosure relates to verification of computerized systems, in general, and to generating tests based on test templates in particular.
Computerized devices control almost every aspect of our life—from writing documents to controlling traffic lights. However, computerized devices are bug-prone, and thus require a testing phase in which the bugs should be discovered. The testing phase, also referred to as verification phase, is considered one of the most difficult tasks in designing a computerized device. The cost of a bug may be enormous, as its consequences may be disastrous. For example, a bug may cause the injury of a person relying on the designated behavior of the computerized device. Additionally, a bug in hardware or firmware may be expensive to fix, as patching it requires call-back of the computerized device. Hence, many developers of computerized devices invest a significant portion, such as 70%, of the development cycle to discover erroneous behaviors of the computerized device.
A test template, comprising several template instructions, may be designed in order to test an aspect of a target computerized system. The test template may be utilized by a generator that generates several tests that are in line with the test template. The test may be implemented, for example, as a binary file or as an assembly program that is configured to perform actions defined in the test template.
A generator may iterate over template instructions in the test template, in a predetermined order. For each template instruction, the generator may generate a corresponding one or more test instructions.